package models.operate;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;

import play.db.jpa.Model;

/**
 * 到货批次详情
 * 
 * 记录每个包裹(order) 到货信息
 * 
 * 这个表不涉及收款,不涉及付款方式,也不涉及物品类型.
 * 
 * 收货动作要快. 只需扫描单号,称重即可.
 * 
 * 注意如果客户在包裹上面描述重量要记录客户描述的重量.
 * 
 * 如果本公司称重与客户交货重(客户说的重量)不一致 当扣件 待客户反馈
 * 
 * 但通常来说是本公司收货称重,入库处理,收费, 重量费用显示到界面. 客户如有异议将发起扣件
 * 
 * 但本表支持 记录客户交货重
 * 
 * 计费,收款,验货等动作当交给后续操作
 * 
 * @author yechao
 * 
 * @date 2013年11月2日
 */
@Entity
@Table(name = "arrive_order_detail")
public class ArriveOrderDetail extends Model {
	/**
	 * 订单表id 到货明细 与 订单的关系 应当是多对一
	 * 
	 * 当客户把一个订单分成多个包裹处理时,就可能存在多个到货明细对应一个订单的情况
	 * 
	 * 当用户订单只有一个item时,出现2个以上到货明细时,应当提醒客户有可能贴错标签
	 */
	@Column(name = "order_id")
	public String orderId;
	/**
	 * 到货总单id
	 */
	@Column(name = "arrive_order_batch_id")
	public String arriveOrderBatchId;
	/**
	 * 发件人交寄的货物上的单号
	 * 
	 * 单号类型不明确
	 * 
	 * 通常可以根据货物上的标签扫描出单号
	 * 
	 * 根据OrderTrckingnNo 找到orderId 从而确定 到货属于哪个订单
	 * 
	 * 当单号重复时,应当添加 客户id,收货时间 等综合条件确认客户订单
	 * 
	 * 当运输方式不能直接打印服务商单号时,应当尽量生成独一无二的单号
	 * 
	 * 得到orderId 后应当马上标记 该订单已经收货
	 * 
	 * 标记订单收货后同时要记录好收货信息,并显示收货信息给客户
	 * 
	 * 避免发生订单信息和收货信息不一致后产生纠纷无法对证
	 */
	@Column(name = "tracking_no")
	public String trackingNo;

	/**
	 * 代理交货重(客户描述货物的重量)
	 * 
	 * 通常是空的.
	 * 
	 * 可考虑 为客户提供打印交货清单功能.
	 */
	@Column(name = "shipper_weight")
	public String shipperWeight;

	/**
	 * 实重(毛重)
	 */
	@Column(name = "gross_weight")
	public String grossWeight;

	/**
	 * 体积重
	 */
	@Column(name = "volume_weight")
	public String volumeWeight;

	/**
	 * 计费重
	 */
	@Column(name = "charge_weight")
	public String chargeWeight;
}
